package com.lsy.weizhi2.config;

import android.content.SharedPreferences;
import android.util.Log;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.Poi;
import com.lsy.weizhi2.fragment.HomeFragment;
import com.lsy.weizhi2.mybase.BaseApp;

/**
 * Created by 嗨哟 on 2017/3/13.
 */
public class MyInfo {
    public static String CartName;
    public static String User_info="user_info";
    public static int User_Id;
    public static String Name;
    public static int Avatar;
    public static String Phone;
    public static String Token;
    public static String UserProvince;
    public static String UserCity;
    public static String Address;
    public static double Latitude;//纬度
    public static double Longitude;//经度
    public static int x=1;
    public static boolean ishomefirst;
    public static boolean isActivity;//是否处于活动状态
    public static int HomeFlag;//首页显示fragment的下标
    /*****
     *
     * 定位结果回调，重写onReceiveLocation方法，可以直接拷贝如下代码到自己工程中修改
     *
     */
    public static BDLocationListener mListener = new BDLocationListener() {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // TODO Auto-generated method stub
            if (null != location && location.getLocType() != BDLocation.TypeServerError) {
                StringBuffer sb = new StringBuffer(256);
                sb.append("time : ");
                /**
                 * 时间也可以使用systemClock.elapsedRealtime()方法 获取的是自从开机以来，每次回调的时间；
                 * location.getTime() 是指服务端出本次结果的时间，如果位置不发生变化，则时间不变
                 */
                sb.append(location.getTime());
                sb.append("\nlocType : ");// 定位类型
                sb.append(location.getLocType());
                Log.i("MyInfo","locType==="+location.getLocType());
                if(location.getLocType()==505){
                    HomeFragment.home_search.setHome_addr(MyInfo.UserCity);
                    ishomefirst=false;
                }
                sb.append("\nlocType description : ");// *****对应的定位类型说明*****
                sb.append(location.getLocTypeDescription());
                sb.append("\nlatitude : ");// 纬度
                sb.append(location.getLatitude());

                sb.append("\nlontitude : ");// 经度
                sb.append(location.getLongitude());
                sb.append("\nradius : ");// 半径
                sb.append(location.getRadius());
                sb.append("\nCountryCode : ");// 国家码
                sb.append(location.getCountryCode());
                sb.append("\nCountry : ");// 国家名称
                sb.append(location.getCountry());
                sb.append("\ncitycode : ");// 城市编码
                sb.append(location.getCityCode());
                sb.append("\ncity : ");// 城市
                String mycity=location.getCity();
                if(x<2){
                    if(mycity.contains("市")){
                        UserCity=mycity.substring(0,mycity.length()-1);
                    }else{
                        UserCity=mycity;
                    }
                    UserProvince=location.getProvince();
                    Address=location.getAddrStr();
                    Latitude=location.getLatitude();
                    Longitude=location.getLongitude();
                    x++;
                }
                Log.i("MyInfo","addr==="+location.getAddrStr());
                sb.append(location.getCity());
                sb.append("\nDistrict : ");// 区
                sb.append(location.getDistrict());
                sb.append("\nStreet : ");// 街道
                sb.append(location.getStreet());
                sb.append("\naddr : ");// 地址信息

                sb.append(location.getAddrStr());

                sb.append("\nUserIndoorState: ");// *****返回用户室内外判断结果*****
                sb.append(location.getUserIndoorState());
                sb.append("\nDirection(not all devices have value): ");
                sb.append(location.getDirection());// 方向
                sb.append("\nlocationdescribe: ");
                sb.append(location.getLocationDescribe());// 位置语义化信息
                sb.append("\nPoi: ");// POI信息
                if (location.getPoiList() != null && !location.getPoiList().isEmpty()) {
                    for (int i = 0; i < location.getPoiList().size(); i++) {
                        Poi poi = (Poi) location.getPoiList().get(i);
                        sb.append(poi.getName() + ";");
                    }
                }
                if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果
                    sb.append("\nspeed : ");
                    sb.append(location.getSpeed());// 速度 单位：km/h
                    sb.append("\nsatellite : ");
                    sb.append(location.getSatelliteNumber());// 卫星数目
                    sb.append("\nheight : ");
                    sb.append(location.getAltitude());// 海拔高度 单位：米
                    sb.append("\ngps status : ");
                    sb.append(location.getGpsAccuracyStatus());// *****gps质量判断*****
                    sb.append("\ndescribe : ");
                    sb.append("gps定位成功");
                    Log.i("MyInfo","gps定位成功");
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果
                    // 运营商信息
                    if (location.hasAltitude()) {// *****如果有海拔高度*****
                        sb.append("\nheight : ");
                        sb.append(location.getAltitude());// 单位：米
                    }
                    sb.append("\noperationers : ");// 运营商信息
                    sb.append(location.getOperators());
                    sb.append("\ndescribe : ");
                    sb.append("网络定位成功");
                    Log.i("MyInfo","网络定位成功");
                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果
                    sb.append("\ndescribe : ");
                    sb.append("离线定位成功，离线定位结果也是有效的");
                    Log.i("MyInfo","离线定位成功");
                } else if (location.getLocType() == BDLocation.TypeServerError) {
                    sb.append("\ndescribe : ");
                    sb.append("服务端网络定位失败，可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com，会有人追查原因");
                    Log.i("MyInfo","服务端网络定位失败");
                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                    sb.append("\ndescribe : ");
                    sb.append("网络不同导致定位失败，请检查网络是否通畅");
                    Log.i("MyInfo","网络不同导致定位失败");
                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                    sb.append("\ndescribe : ");
                    sb.append("无法获取有效定位依据导致定位失败，一般是由于手机的原因，处于飞行模式下一般会造成这种结果，可以试着重启手机");
                    Log.i("MyInfo","无法获取有效定位依据导致定位失败");
                }
                //locationService.stop(); //停止定位服务
                //logMsg(sb.toString());
                //此处还要向服务器发送--位置坐标
                if(ishomefirst){
                    HomeFragment.home_search.setHome_addr(MyInfo.UserCity);
                    SharedPreferences.Editor sharedPreferences= BaseApp.context.getSharedPreferences(MyInfo.User_info,0).edit();
                    sharedPreferences.putBoolean("ishomefirst",false);
                    sharedPreferences.commit();
                }
            }

        }

        @Override
        public void onConnectHotSpotMessage(String s, int i) {

        }

    };
}
